package Question10_7;
import java.util.Queue;
import java.util.LinkedList;
public class Question {
public static int getKthMagicNumber(int k) {
if (k <= 0) return 0;
int val = 1;
Queue<Integer> Q3 = new LinkedList<Integer>();
Queue<Integer> Q5 = new LinkedList<Integer>();
Queue<Integer> Q7 = new LinkedList<Integer>();
Q3.add(3);
Q5.add(5);
Q7.add(7);
for (--k; k > 0; --k) { // We�ve done one iteration already.
val = Math.min(Q3.peek().intValue(), Math.min(Q5.peek().intValue(), Q7.peek().intValue()));
if (val == Q7.peek()) {
Q7.remove();
} else {
if (val == Q5.peek()) {
Q5.remove();
} else { // must be from Q3
Q3.remove();
Q3.add(val * 3);
}
Q5.add(val * 5);
}
Q7.add(val * 7);
}
return val;
}
public static void main(String[] args) {
for (int i = 0; i < 14; i++) {
System.out.println(i + " : " + getKthMagicNumber(i));
}
}
}